/**
 * 等待一定时间后继续执行（async中
 * @param time 等待时间
 * @returns a Promise
 */
export const timeSleep = (time:number) => {
  return new Promise(success=>{
    setTimeout(()=>{
      success('')
    },time)
  })
}

/**
 * 邮箱验证
 * @param mail 邮箱
 * @returns Boolean
 */
export const mailReg = (mail:string) => {
	return mail!=''?
	/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(mail)
	: true
}

/**
 * 
 * @param fmt 
 * @param date 
 * @returns 
 */
export const dateFormat = (fmt:string, date:Date|string|number) =>{
  let ret;
  // Object.prototype.toString.call(date) != '[object Date]'
  if(!(date instanceof Date)) date = new Date(date)
  const opt = {
      "Y+": date.getFullYear().toString(),        // 年
      "M+": (date.getMonth() + 1).toString(),     // 月
      "D+": date.getDate().toString(),            // 日
      "h+": date.getHours().toString(),           // 时
      "m+": date.getMinutes().toString(),         // 分
      "s+": date.getSeconds().toString()          // 秒
  };
  for (let k in opt) {
      ret = new RegExp("(" + k + ")").exec(fmt);
      if (ret) {
          fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
      };
  };
  return fmt;
}